package com.example.threadSimple;


/**
 * @Author: Ah Nan
 * @Description: Volatile关键字使用
 * @Description: volatile关键字的作用：保证了变量的可见性（visibility）。被volatile关键字修饰的变量，如果值发生了变更，其他线程立马可见，避免出现脏读的现象。
 * @Date: 16:24 2020/6/28
 */
public class VolatileDemo {

    private  volatile  static boolean stop = false;

    public static void main(String[] args) throws InterruptedException {



        //子线程start
        new Thread(() -> {
            int i = 0;
            while (!stop) {
                i++;
            }
        }).start();
        //子线程end
        Thread.sleep(1000);

        //主线程改变变量的值控制子线程，如果不加Volatile子线程可能会一直运行，什么时候停是未知的，加上Volatile会让变量可见子线程可以访问到变量
        stop = true;

    }
}
